<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        // Proxy的意思是代理，我们可以把它理解为一个拦截器
        // 就是当我们操作对象时，它都会对对象的操作进行拦截，从而进行监测和改写。
        var obj = {
            name:"lili",
            age:18,
        }
        var obj1 = new Proxy(obj,{
            // 获取拦截 在对这个对象进行获取时,会先执行这个函数
            get:function(target, propKey, receiver){
                console.log(target); //{}  处理的对象
                console.log(propKey); //要读取的属性名
                console.log(receiver); //Proxy {}  新生成的拦截对象
                // 返回要获取的值
                // return 10;
                // Reflect 是js提供的新的操作对象的 (基本是结合Proxy使用的)
                // get() 是获取用的
                return Reflect.get(target, propKey, receiver)
            },
            set:function(target, propKey, value, receiver){
                console.log("有谁设置了",propKey,"属性");
                return Reflect.set(target, propKey, value, receiver)
            }
        })
        
        // var n =obj1.name 
        // console.log(obj1.name);
        obj1.sex = "true"

        // var str = new String();
        // console.log(str);
    </script>
</body>
</html>